background-image:url(images/title-image.png) background-size: 35% background-position: 90% 95% # R によるデータ解析入門 ### [ソフトウェアカーペントリー日本](https://swcarpentry-ja.github.io/)<br>[Beyond AI](https://beyondai.jp/) <span style = 'font-size: 120%;'>2021/04/02 – 2021/04/16</span> <br><br><img src="https://beyondai.jp/images/common/logo.svg" alt="drawing" height="75"> --- ## 一日目 アウトライン - B'AIの紹介 - スタッフの紹介 - ソフトウェアカーペントリーの紹介 - ワークショップのやり方について - Ice breaker - ソフトのインストール --- ## B'AIの紹介 --- ## スタッフの紹介 .pull-left[ ニッタ ジョエル(インストラクター) @joel_nitta - 特任助教 - 理学系岩崎研究室 - 研究テーマ:シダ植物の進化、生態学、ゲノム解析 - 趣味:マラソン ] .pull-right[ <img src="data:image/png;base64,#https://www.joelnitta.com/project/community_ecology/featured_hudf7b8620e192de66d79d1f7e36df7824_885020_540x0_resize_q75_lanczos.jpg" alt="drawing" height="300"/> ] --- ## スタッフの紹介 .pull-left[ 武井陸良(インストラクター) @rikutakei - 研究員 - アラバマ大学バーミンガム校 - 研究テーマ:痛風の遺伝要因、ゲノム解析 - 趣味:ロッククライミング ] .pull-right[  ] --- ## スタッフの紹介 .pull-left[ 西田 孝三(ヘルパー) @kozo2 - 技術員 - 理化学研究所 生命機能科学研究センター - 研究テーマ:パスウェイ関連データの統合・可視化・解析 - 趣味:オープンサイエンスコミュニティの運営 ] .pull-right[ <img src="data:image/png;base64,#http://bioconductor.org/images/cab/kozo.png" alt="drawing" height="300"/> ] --- ## Software Carpentry (SWC) とは? .middle[ - 無償でコードを教えるワークショップ - ボランティアによって運営されている - 研究者にコードのベストプラクティスを教える ]  .center[https://software-carpentry.org/] --- ### アメリカをはじめ、様々な国で実施  --- ## ワークショップ - 研究者が**コミュニティを作って**、互いに教え合う - フィードバックを重視する - 二日間にわたるワークショップ - 3−4レッスンを教える(今回はRのみ) .center[<img src="https://software-carpentry.org/files/workshops/mit-2013-slice.jpg" alt="drawing" height="200">] --- ## ザ・カーペントリーズ Data Carpentry, Library Carpentry, Software Carpentry  --- ## ザ・カーペントリーズ日本 - ボランティアからなる多国籍なグループが教材を日本語に翻訳している - コミュニティーを一緒に支える方を探しています! .center[<img src="images/swc-ja-team.png" alt="drawing" height="350">] --- ## 参加者大募集中 - Twitter: @swcarpentry_ja - Slack: https://carpentries-jp-en.herokuapp.com/ からアクセス - GitHub: https://github.com/swcarpentry-ja/i18n/ - Meetup: 二ヶ月ごとにzoomで .center[<img src="https://4.bp.blogspot.com/-Q6dyWG9-rBs/UrlmwEb2YSI/AAAAAAAAcLc/uoaFgnGVfvo/s400/text_bosyuchu.png" alt="drawing" height="200">] --- ## SWCワークショップの流れ - スライドによる内容の説明 - **ライブコーディング** --- ## ライブコーディングとは? - インストラクターが打っていると同じコードを同時に自分のパソコンで打って行く - 何か問題があった時に**声をかける** - ヘルパーあるいはインストラクターが問題を解決するのに手伝う --- ## ライブコーディングとは? - インストラクターが参加者の理解を確認する(「〜が出来ましたか?」) - zoomの「反応」をクリック→「はい」、「いいえ」 .center[<img src="images/zoom_reactions.png" alt="drawing" height="200">] --- ## Ice breaker 4−5人ずつブレークアウトルームで自己紹介しましょう - どうやってRを知りましたか? - 趣味は何ですか? --- ## ソフトのインストール - **R** https://cloud.r-project.org/ - `R.version.string`を打って、結果をチャットに貼ってください - **RStudio** https://rstudio.com/products/rstudio/download - **Zoom** https://zoom.us/jp-jp/home.html - **tidyverse** - `install.packages("tidyverse")` --- ## 二日目 アウトライン - RStudio入門 - Rを計算機としての使用 - 変数 (休憩) - 関数 - RStudioを使ったプロジェクト管理 - ヘルプ機能 --- ## なぜRを使うのか - 無料だから - パッケージが豊富 - Rコードを使うことによって統計解析の再現性が上がる --- ## RStudioって何? - 総合開発環境(IDE - Integrated Development Environment) - コードを書く場所(エディタ)とそれを実行するプログラム(R)が合わさったソフトウェアのこと - プロジェクト管理など、他にも便利機能がついています --- ### チャレンジ 以下の変数名のうち、Rで使える変数名はどれでしょう?(複数可) 1. min-height 2. max.height 3. _age 4. celsius2kelvin 5. MaxLength --- ### 答え 1. ~~min-height~~ 2. **max.height** 3. ~~_age~~ 4. **celsius2kelvin** 5. **MaxLength** --- ### チャレンジ 以下のコードを実行した後、massとageの値は何でしょうか? .pull-left[ ```r mass <- 47.5 age <- 122 mass <- mass * 2.3 age <- age - 20 ``` ] --- ### チャレンジ 以下のコードを実行した後、massとageの値は何でしょうか? .pull-left[ ```r mass <- 47.5 age <- 122 mass <- mass * 2.3 age <- age - 20 ``` ] .pull-right[ **答え** ```r mass ``` ``` ## [1] 109.25 ``` ```r age ``` ``` ## [1] 102 ``` ] --- ### RStudio によるプロジェクト管理 よくあること: .center[<img src="images/bad_layout.png" alt="drawing" height="400">] --- ### 問題 1. データのバージョン(原本か修正版か)が分かりません 2. コードのバージョンが分かりません 3. 知りたい結果(図など)を探すのに時間がかかります 4. 図とその図を出力するコードの対応が分かりません -- 以上の問題を解決することによって、**しばらく手をつけていなくても、簡単にプロジェクトを再開できる** --- ### RStudioで新しいプロジェクトを作成しましょう 1. "File" メニューボタンをクリックし、"New Project"をクリック 2. "New Directory"をクリック 3. "Empty Project"をクリック 4. プロジェクトを保存するディレクトリの名前をタイプ(例 "my_project") 5. 可能なら、"Create a git repository"のチェックボックスを選択 6. "Create Project" ボタンをクリック --- ### プロジェクト管理の最適なやり方 1. データは読み込み専用にしましょう 2. 生成されたアウトプットを捨てても良いようにしましょう 3. 関数定義と適用は別々にしましょう --- ### チャレンジ:データディレクトリにデータを保存する ギャップマインダーのデータを[ここから](https://raw.githubusercontent.com/swcarpentry/r-novice-gapminder/gh-pages/_episodes_rmd/data/gapminder_wide.csv)ダウンロードしましょう 1. ファイルをダウンロードする(CTRL + S、右マウスクリック -> 「名前を付けて保存する」、またはファイル ->「ページを名前を付けて保存する」) 2. 確実に `gapminder_data.csv` という名前で保存しましょう 3. プロジェクトの中にある `data/` フォルダに保存しましょう このデータは後で読み込んで色々調べます --- ## 三日目 アウトライン - 二日目のおさらい - データ型について - ベクトルの使い方1 (休憩) - ベクトルの使い方2 - データフレームの使い方 - データフレームからデータを抜き出す --- ## 四日目 アウトライン - 三日目のおさらい - `filter()`、`select()`、`mutate()`関数を使ってみる - `group_by()`と`summarise()`関数を使って基本的な計算をしてみる (休憩) - `ggplot2`パッケージについて - レイヤーの仕組み - `ggplot()`関数を使って図を作成してみる --- ## 五日目 アウトライン - 四日目のおさらい - グループ別に色や形を変えてみる - `ggsave()`関数で図を保存する (休憩) - `rmarkdown`でレポートを作成する(仮)